package com.vhall.component.service.ctrl;

import com.alibaba.fastjson.JSONObject;
import com.vhall.component.entity.ctrl.AnchorExtendsEntityDTO;
import com.vhall.component.entity.ctrl.vo.ConnectJudgeRspVO;
import com.vhall.component.entity.ctrl.vo.ConnectNumSetReqVo;

/**
 * @author xuyongzheng
 * @since 2021/5/17 上午11:18
 **/
public interface CtrlService {
    /**
     * 并发限制判断
     *
     * @param accountId   用户id
     * @param roomId      房间id
     * @param ilId        房间id
     * @param channelId   渠道id
     * @param thirdId     thirdId
     * @param nifyChannel nifyChannel
     * @return room max count
     */
    ConnectJudgeRspVO judgment(Integer accountId, String roomId, Integer ilId, String channelId, String thirdId, String nifyChannel);

    /**
     * 添加或更新并发控制信息
     *
     * @param vo 参数
     * @return 返回值
     */
    AnchorExtendsEntityDTO createOrUpdate(ConnectNumSetReqVo vo);

    /**
     * 获取并发控制信息
     *
     * @param accountId 用户id
     * @return 返回值
     */
    AnchorExtendsEntityDTO findByAccountId(Integer accountId);

    /**
     * 用户加入排队队列
     *
     * @param accountId 用户id
     * @param ilId      房间id
     * @return 返回值
     */
    Boolean queueAdd(Integer accountId, Integer ilId);

    /**
     * 获取当前系统的连接数信息
     */
    JSONObject getSysConnectInfo();
}
